package br.com.massai.view.utils;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import br.com.massai.model.exceptions.ErrorCore;
import br.com.massai.model.exceptions.SystemException;

public class PropertiesUtil {

	private static final Logger logger = LogManager.getLogger(PropertiesUtil.class);

	/**
	 * Construtor privado para que a classe utititaria não seja instanciada.
	 */
	private PropertiesUtil() {
	}

	/**
	 * Recupera o Properties do path passado por parâmetro.
	 * 
	 * @param path
	 *            O Path para o arquivo de properties.
	 * @return o Properties
	 * @throws SystemException
	 *             Caso ocorra alguma exceção ao carregar o arquivo de
	 *             properties.
	 */
	public static Properties getProperties(String path) throws SystemException {

		Properties properties = new Properties();

		try {
			properties.load(getInputStream(path));
		} catch (IOException e) {
			logger.error(e.getMessage(), e);
			throw new SystemException(ErrorCore.ERROR_SYSTEM, e);
		}

		return properties;
	}

	/**
	 * Recupera o InputStream de um arquivo.
	 * 
	 * @param path
	 *            uma String contendo o caminho para o arquivo
	 * @return um InputStream contendo o InputStream do arquivo
	 */
	private static InputStream getInputStream(String path) {
		PropertiesUtil util = new PropertiesUtil();
		if (!path.contains(".")) {
			path += ".properties";
		}
		return util.getClass().getResourceAsStream("/" + path);
	}

}
